package com.apes.util;

import com.apestech.framework.util.StringUtil;

import java.util.ArrayList;
import java.util.List;

/**
 * 功能：建树
 *
 * @author zhuyh
 * @time 14:48
 * @date 2018/8/7
 */
public class BuildTreeUtil {

    /**
     *
     * @param <T>
     * @return
     */
    public static <T> TreeUtil<T> build(List<TreeUtil<T>> nodes){

        List<TreeUtil<T>> topNode = new ArrayList<TreeUtil<T>>();

        child:
        for(TreeUtil child : nodes){

            //获取父节点
            String paranId=child.getParent();
            if(StringUtil.isEmpty(paranId)){
                //查找到无父节点 放入到根节点
                topNode.add(child);
                continue;
            }

            for(TreeUtil parant:nodes){
                String id=parant.getId();
                if(!StringUtil.isEmpty(id)&&id.equals(paranId)){
                    //当前ID等于 子类的父id那么 这个 tree 是子类的父节点
                    parant.getChildren().add(child);
                    continue child;
                }
            }
        }

        TreeUtil<T> root = new TreeUtil<T>();

        if(topNode.size() == 0){
           root = topNode.get(0);
        }else {
            root.setId("-1");
            root.setParent("");
            root.setChildren(topNode);
            root.setLabel("所有");
            root.setData("-1");
            root.setExpandedIcon("anticon-folder-open");
            root.setCollapsedIcon("anticon-folder");
        }
        return root;
    }

}
